﻿<!DOCTYPE HTML>
<!-- saved from url=(0078)http://172.13.19.31:6060/note_html/服务器/CentOS/100402-linux文件查找命令.html -->
<!DOCTYPE html PUBLIC "" ""><HTML><HEAD><META content="IE=11.0000" 
http-equiv="X-UA-Compatible">
 
<META http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<TITLE>104-linux文件查找命令-2</TITLE> <LINK href="104-linux文件查找命令-2_files/standalone.css" 
rel="stylesheet"> <LINK href="104-linux文件查找命令-2_files/overlay-apple.css" rel="stylesheet"> 
<LINK href="104-linux文件查找命令-2_files/article_edit.css" rel="stylesheet"> 
<STYLE type="text/css">
	#content{
		margin: 5px 10px;
	}
</STYLE>
	 <!-- 代码高亮 -->	 <LINK href="104-linux文件查找命令-2_files/shCoreEclipse.css" rel="stylesheet">
	 <LINK href="104-linux文件查找命令-2_files/my-highlighter.css" rel="stylesheet"> 
<META name="GENERATOR" content="MSHTML 11.00.10586.545"></HEAD> 
<BODY>
<DIV id="content">
<H1 align="center">104-linux文件查找命令-2</H1>
<P align="right" 
style="margin: 0px 10px 0px 0px; padding: 0px;">最后修改时间：2015-08-06 11:15:43</P>
<HR style="border-width: 2px; border-color: lime;">

<H3>locate命令</H3>
<PRE class="brush: bash;">locate命令其实是"find -name"的另一种写法，但是要比后者快得多，原因在于它不搜索具体目录，而是搜索一个数据库（/var/lib/locatedb），
这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库，并且每天自动更新一次，所以使用locate命令查不到最新变动过的文件。
为了避免这种情况，可以在使用locate之前，先使用updatedb命令，手动更新数据库。

 命令用途

locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。
其方法是先建立一个包括系统内所有档案名称及路径的数据库，之后当寻找时就只需查询这个数据库，而不必实际深入档案系统之中了。

所以你要知道：
1. locate的速度比find快，因为它并不是真的查找文件，而是查数据库
2. locate的查找并不是实时的，而是以数据库的更新为准，一般是系统自己维护

3. 升级数据库命令：locate -- u

命令用法

＃查看locate版本信息-Ｖ


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -V  
    mlocate 0.25  
    Copyright (C) 2007 Red Hat, Inc. 保留所有权利。  
    本软件在 GPL v.2 下发布。  
      
    本程序不提供任何担保，在法法律允许的范围内予以排除。  

＃查看locate帮助信息


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -h  
    用法: locate [OPTION]... [PATTERN]...  
    在mlocate数据库中搜索条目.  
      
    -b, --basename 匹配唯一的路径名称的基本文件名  
    -c, --count 只显示找到条目的号码  
    -d, --database DBPATH 用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)  
    -e, --existing 只显示当前存在的文件条目  
    -L, --follow 当文件存在时跟随蔓延的符号链接 (默认)  
    -h, --help 显示本帮助  
    -i, --ignore-case 匹配模式时忽略大小写区别  
    -l, --limit, -n LIMIT 限制为 LIMIT项目的输出 (或 计数)   
    -m, --mmap 忽略向后兼容性  
    -P, --nofollow, -H 当检查文件时不跟随蔓延的符号  
    链接  
    -0, --null 输出时以 NUL 分隔项目  
    -S, --statistics 不搜索项目,显示有关每个已用数据库的统计信息  
    -q, --quiet 不报告关于读取数据库的错误消息  
    -r, --regexp REGEXP 搜索基本正则表达式 REGEXP 来代替模式  
    --regex 模式是扩展正则表达式  
    -s, --stdio 忽略向后兼容性  
    -V, --version 显示版本信息  
    -w, --wholename 匹配完整路径名 (默认)  
      
    将 bug 报告给 mitr@redhat.com.  

# 查找etc目录下所有以sh开头的文件


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate /etc/sh  
    /etc/shadow  
    /etc/shadow-  
    /etc/shells  



#查看soft目录下以android开头的文件，限定只显示5个，使用 -n


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -n 5 /soft/android  
    /home/bixiaopeng/soft/android-studio  
    /home/bixiaopeng/soft/android-studio-bundle-130.737825-linux.tgz  
    /home/bixiaopeng/soft/android-studio/Install-Linux-tar.txt  
    /home/bixiaopeng/soft/android-studio/LICENSE.txt  
    /home/bixiaopeng/soft/android-studio/NOTICE.txt  

#查找时区分大小写


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate makefile  
    /usr/share/doc/python3-uno/demo/makefile.mk  
    /usr/share/emacs/23.4/lisp/cedet/ede/makefile-edit.elc  
    /usr/share/gtksourceview-3.0/language-specs/makefile.lang  
    /usr/share/icons/Humanity/mimes/16/gnome-mime-text-x-makefile.svg  
    /usr/share/icons/Humanity/mimes/22/gnome-mime-text-x-makefile.svg  
      
    .....  


#查找时不区分大小写，使用 -i


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -i makefile  
      
    /usr/src/linux-headers-3.8.0-30/kernel/Makefile  
    /usr/src/linux-headers-3.8.0-30/kernel/debug/Makefile  
    /usr/src/linux-headers-3.8.0-30/kernel/debug/kdb/Makefile  
    /usr/src/linux-headers-3.8.0-30/kernel/events/Makefile  
      
    ......  

# ------------- 使用正规运算式 做查找的条件　locate -r

＃查找以makefile结尾的文件


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -r makefile$  
    /usr/src/linux-headers-3.8.0-19/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-19-generic/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-27/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-27-generic/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-29/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-29-generic/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-30/scripts/mkmakefile  
    /usr/src/linux-headers-3.8.0-30-generic/scripts/mkmakefile  

＃查找以/var/lib/dpkg/info/开头的文件


    bixiaopeng@bixiaopeng-To-be-filled-by-O-E-M:~$ locate -r ^/var/lib/dpkg/info/  
      
    /var/lib/dpkg/info/zlib1g:amd64.postinst  
    /var/lib/dpkg/info/zlib1g:amd64.postrm  
    /var/lib/dpkg/info/zlib1g:amd64.shlibs  
    /var/lib/dpkg/info/zlib1g:amd64.symbols  
    /var/lib/dpkg/info/zlib1g:i386.list  
    /var/lib/dpkg/info/zlib1g:i386.md5sums  
    /var/lib/dpkg/info/zlib1g:i386.postinst  
    /var/lib/dpkg/info/zlib1g:i386.postrm  
    /var/lib/dpkg/info/zlib1g:i386.shlibs  
    /var/lib/dpkg/info/zlib1g:i386.symbols  
</PRE>
<H3>whereis 命令</H3>
<PRE class="brush: bash;">whereis 通过预先生成的一个文件列表库去查找跟给出的文件名相关的文件。

语法： whereis [-bmsu] [文件名称]

-b：只找binary 文件

-m：只找在说明文件manual路径下的文件

-s：只找source来源文件

-u：没有说明档的文件

whereis 命令很少使用
</PRE>
<H3>which 命令</H3>
<PRE class="brush: bash;">which只能用来查找PATH环境变量中出现的路径下的可执行文件，当查找的文件在PATH变量中并没有时，就会报错。
</PRE>
<HR style="border-width: 2px; border-color: lime;">

<DIV align="center">©copyright 2013 ~ 2015 作者：zzy</DIV>
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shCore.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJava.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushJScript.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushXml.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushSql.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/syntaxhighlighter/scripts/shBrushBash.js" type="text/javascript"></SCRIPT>
	
<SCRIPT src="../../pub/syntaxhighlighter/init.js" type="text/javascript"></SCRIPT>
 
<SCRIPT src="../../pub/js/jquery.tools.min.js" type="text/javascript"></SCRIPT>
 <!-- make all links with the 'rel' attribute open overlays --> 
<SCRIPT>
  $(function() {
      $("#apple img[rel]").overlay({effect: 'apple'});
    });
</SCRIPT>
 </DIV></BODY></HTML>
